#ifndef CMESSAGESYSTEM_H_
#define CMESSAGESYSTEM_H_

#include <queue>
using namespace std;
#include "CMessager.h"
typedef void ( *MESSAGEPROC )( CMessager* );

class CMessageSystem
{
private:
	queue<CMessager* >  m_MsgQueue;
	MESSAGEPROC		m_pfnMsgProc;


	CMessageSystem( void ){ m_pfnMsgProc = NULL; }
	CMessageSystem( const CMessageSystem& );
	CMessageSystem& operator=( const CMessageSystem& );
	~CMessageSystem( void ){ }
public:
	static CMessageSystem* GetInstance( void );
	int GetNumMessages( void ) { return m_MsgQueue.size() ; }
	void InitMessageSystem( MESSAGEPROC pfnMsgProc );
	void SendMsg( CMessager* msg );
	void ProcessMessages( void );
	void ClearAllMessages( void );
	void ShutdownMessageSystem( void );
};
#endif 